package com.work.dto.builder;

import java.util.Date;

import com.work.dto.ProjectDto;
import com.work.model.builder.Builder;

/**
 * The Class ProjectDtoBuilder.
 *
 * @author "Mihai Roman"
 */
public class ProjectDtoBuilder extends Builder<ProjectDto> {

	/**
	 * With code freeze.
	 *
	 * @param droCodeFreeze the dro code freeze
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withCodeFreeze(Date droCodeFreeze) {
		build().setDtoCodeFreeze(droCodeFreeze);
		return this;
	}
	
	/**
	 * With created by.
	 *
	 * @param dtoCreatedBy the dto created by
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withCreatedBy(int dtoCreatedBy) {
		build().setDtoCreatedBy(dtoCreatedBy);
		return this;
	}
	
	/**
	 * With created date.
	 *
	 * @param dtoCreatedDate the dto created date
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withCreatedDate(Date dtoCreatedDate) {
		build().setDtoCreatedDate(dtoCreatedDate);
		return this;
	}
	
	/**
	 * With domain.
	 *
	 * @param dtoDomain the dto domain
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withDomain(String dtoDomain) {
		build().setDtoDomain(dtoDomain);
		return this;
	}
	
	/**
	 * With end date.
	 *
	 * @param dtoEndDate the dto end date
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withEndDate(Date dtoEndDate) {
		build().setDtoEndDate(dtoEndDate);
		return this;
	}
	
	/**
	 * With id projects.
	 *
	 * @param dtoIdProjects the dto id projects
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withIdProjects(int dtoIdProjects) {
		build().setDtoIdProjects(dtoIdProjects);
		return this;
	}
	
	/**
	 * With name.
	 *
	 * @param dtoName the dto name
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withName(String dtoName) {
		build().setDtoName(dtoName);
		return this;
	}
	
	/**
	 * With pm.
	 *
	 * @param dtoPM the dto pm
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withPM(int dtoPM) {
		build().setDtoPM(dtoPM);
		return this;
	}
	
	/**
	 * With start date.
	 *
	 * @param dtoStartDate the dto start date
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withStartDate(Date dtoStartDate) {
		build().setDtoStartDate(dtoStartDate);
		return this;
	}
	
	/**
	 * With updated by.
	 *
	 * @param dtoUpdatedBy the dto updated by
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withUpdatedBy(int dtoUpdatedBy) {
		build().setDtoUpdatedBy(dtoUpdatedBy);
		return this;
	}
	
	/**
	 * With updated date.
	 *
	 * @param dtoUpdatedDate the dto updated date
	 * @return the project dto builder
	 */
	private ProjectDtoBuilder withUpdatedDate(Date dtoUpdatedDate) {
		build().setDtoUpdatedDate(dtoUpdatedDate);
		return this;
	}
	
	/**
	 * A project.
	 *
	 * @param droCodeFreeze the dro code freeze
	 * @param dtoCreatedBy the dto created by
	 * @param dtoCreatedDate the dto created date
	 * @param dtoDomain the dto domain
	 * @param dtoEndDate the dto end date
	 * @param dtoName the dto name
	 * @param dtoPM the dto pm
	 * @param dtoStartDate the dto start date
	 * @param dtoUpdatedBy the dto updated by
	 * @param dtoUpdatedDate the dto updated date
	 * @return the project dto
	 */
	public ProjectDto aProject(Date droCodeFreeze, int dtoCreatedBy, Date dtoCreatedDate, String dtoDomain, Date dtoEndDate, String dtoName, int dtoPM, Date dtoStartDate, int dtoUpdatedBy, Date dtoUpdatedDate) {
		this.withCodeFreeze(droCodeFreeze);
		this.withCreatedBy(dtoCreatedBy);
		this.withCreatedDate(dtoCreatedDate);
		this.withDomain(dtoDomain);
		this.withEndDate(dtoEndDate);
		this.withName(dtoName);
		this.withPM(dtoPM);
		this.withStartDate(dtoStartDate);
		this.withUpdatedBy(dtoUpdatedBy);
		this.withUpdatedDate(dtoUpdatedDate);
		return this.build();
	}
	
	/**
	 * A project.
	 *
	 * @param droCodeFreeze the dro code freeze
	 * @param dtoCreatedBy the dto created by
	 * @param dtoCreatedDate the dto created date
	 * @param dtoDomain the dto domain
	 * @param dtoEndDate the dto end date
	 * @param dtoName the dto name
	 * @param dtoPM the dto pm
	 * @param dtoStartDate the dto start date
	 * @param dtoUpdatedBy the dto updated by
	 * @param dtoUpdatedDate the dto updated date
	 * @param dtoIdProjects the dto id projects
	 * @return the project dto
	 */
	public ProjectDto aProject(Date dtoCodeFreeze, int dtoCreatedBy, Date dtoCreatedDate, String dtoDomain, Date dtoEndDate, String dtoName, int dtoPM, Date dtoStartDate, int dtoUpdatedBy, Date dtoUpdatedDate, int dtoIdProjects) {
		this.withCodeFreeze(dtoCodeFreeze);
		this.withCreatedBy(dtoCreatedBy);
		this.withCreatedDate(dtoCreatedDate);
		this.withDomain(dtoDomain);
		this.withEndDate(dtoEndDate);
		this.withName(dtoName);
		this.withPM(dtoPM);
		this.withStartDate(dtoStartDate);
		this.withUpdatedBy(dtoUpdatedBy);
		this.withUpdatedDate(dtoUpdatedDate);
		this.withIdProjects(dtoIdProjects);
		return this.build();
	}
}
